Resource management in large-scale IT systems presents a number of challenges. Current service models such as grid and utility computing increase the complexity of resource management by creating highly bursty and unpredictable resource demand patterns. These demand patterns are very difficult to anticipate or to characterize in advance. Successful operation of these service models requires meeting service level agreements (SLA's) on application performance. Conventional resource management approaches allocate system resources by estimating the statistical expectations of application resource demands and attempting to compute a theoretical bound on the probability of an SLA violation.
By contrast, a dynamic resource manager monitors the performance of the IT system and the utilization of system resources, adjusting the allocation of resources when system operation is deemed to be off-target, or not meeting the prescribed SLA's. In general, a resource manager acts upon the available controls that are used to apply scheduling methods to regulate and order the use of resources by the various applications. For example, a process scheduling function is used to allocate shares of the processing resource, i.e. the one or more central processing units (CPUs), among the various processes being executed by that processing resource. A dynamic resource manager proposes changes to these allocations upon a determination that certain performance objectives are not being fulfilled, and/or when it calculates an alternate allocation that may be advantageous.
Dynamic resource managers control various types of system resources, for example processing resources (e.g. CPU cycles), main system memory, disk space and network resources (e.g. communication bandwidth and network buffers). Conventional approaches manage processing resources and networking resources independently, generally ignoring the complex dependency between availability and utilization of each resource. In fact, prevailing approaches to performance-based resource management in IT systems control processing resources, while assuming that network capacity is over-provisioned. This assumption only holds true in systems where the deployed applications are very computationally intensive, have very limited communication requirements, and do not involve long-distance or low-bandwidth communication links.
However, as IT systems expand in size and geographic scale, make increased use of public and wide area networks, and cope with unpredictable demands introduced by new application models such as grid computing, utility computing and multimedia stream processing, network resource management becomes an integral part of system management. The transfer of large amounts of data over communication resources that are not over-provisioned, coupled with a degree of unpredictability adds substantial complexity to the overall system management.
Therefore, systems and methods are needed that control network resource allocation to achieve application performance objectives as well as to achieve target utilization of other system resources such as computing resources. These systems and methods need to explicitly take into account the complex dependency between availability and utilization of each one of the types of resources in the system, including processing resources and network resources.